#include<iostream>
#include<memory>
#include<string>

class Target
{
    public:
        virtual void todo() = 0;
};

class Adaptee
{
    public:
        void dosomething(){std::cout << "dosomething" << std::endl;};
};

class Adapter:public Target
{
    public:
        void todo()override{adapree_->dosomething();};
    private:
        std::shared_ptr<Adaptee>adapree_;
};

int main(int argc, char const *argv[])
{
    Adapter adapter;
    adapter.todo();
    return 0;
}
